package xmu.crms.mapper;

import java.math.BigInteger;
import java.util.List;

import org.springframework.stereotype.Component;

import xmu.crms.entity.Attendance;
import xmu.crms.entity.School;
import xmu.crms.entity.User;

/**
 * UserMapper
 * 仅获取登录所需要的用户信息
 *
 * @author YeHongjie
 * @date 2017-12-19
 */
@Component
public interface UserMapper {

	/**
	 * 根据用户id获取用户.
	 * @param userId
	 * @return
	 */
	User getUserByUserId(BigInteger userId);

	/**
	 * 根据用户名称获取用户.
	 * @param userName
	 * @return
	 */
	List<User> getUserByUserName(String userName);

	/**
	 * 新增签到记录.
	 * @param attendance
	 * @return
	 */
	int insertAttendanceById(Attendance attendance);

	/**
	 * 根据用户id更新用户信息.
	 * @param userId
	 * @param user
	 * @return
	 */
	int updateUserByUserId(BigInteger userId, User user);

	/**
	 * 根据班级id列出该班级下所有学生.
	 * @param classId
	 * @param numBeginWith
	 * @param nameBeginWith
	 * @return
	 */
	List<User> getUserByClassId(BigInteger classId, String numBeginWith, String nameBeginWith);

	/**
	 * 列出出勤同学.
	 * @param classId
	 * @param seminarId
	 * @param status
	 * @return
	 */
	List<User> getAttendanceByIdAndStatus(BigInteger classId, BigInteger seminarId, Integer status);

	/**
	 * 根据班级id和讨论课id列出签到列表.
	 * @param classId
	 * @param seminarId
	 * @return
	 */
	List<Attendance> getAttendanceById(BigInteger classId, BigInteger seminarId);

	/**
	 * 新增用户.
	 * @param user
	 * @return
	 */
	Integer insertUser(User user);

	/**
	 * 根据学校id列出教师列表.
	 * @param school
	 * @return
	 */
	List<User> listTeacherBySchoolId(School school);

	/**
	 * 根据学生学号/老师教工号获取用户信息
	 * @param user 存储了用户学号/教工号信息
	 * @return User 用户信息
	 */
	User getUserByNumber(User user);
}
